import mailTransporter, { nodemailer } from "@src/util/mail";
import { NextFunction, Response, Request } from "express";

/**
 * 发送测试邮件
 * 直接发送固定内容的测试邮件
 */
async function sendMail(req: Request, res: Response, next: NextFunction) {
  try {
    // 固定的测试邮件配置
    const testContent = "这是一封来自博客系统的测试邮件。\n\n系统功能正常运行中。\n\n发送时间：" + new Date().toLocaleString('zh-CN');

    const mailOptions = {
      from: process.env.SMTP_USERNAME || "yxqsir@163.com", // 发件人从环境变量获取
      to: "992620216@qq.com", // 固定收件人
      subject: "测试博客", // 固定主题
      text: testContent, // 纯文本内容
      html: `<div style="font-family: Arial, sans-serif; line-height: 1.6; color: #333;">
        <h2 style="color: #2c3e50;">来自博客系统的测试邮件</h2>
        <div style="background: #f8f9fa; padding: 20px; border-radius: 5px; margin: 20px 0;">
          <p>这是一封来自博客系统的测试邮件。</p>
          <p>系统功能正常运行中。</p>
          <p><strong>发送时间：</strong>${new Date().toLocaleString('zh-CN')}</p>
        </div>
        <hr style="border: none; border-top: 1px solid #eee; margin: 20px 0;">
        <p style="color: #666; font-size: 12px;">
          此邮件由博客系统自动发送，请勿直接回复。<br>
          发件人：${process.env.SMTP_USERNAME || 'yxqsir@163.com'}
        </p>
      </div>`
    };

    const info = await mailTransporter.sendMail(mailOptions);

    console.log("Message sent: %s", info.messageId);
    const previewUrl = nodemailer.getTestMessageUrl(info);
    console.log("Preview URL: %s", previewUrl);

    return res.status(200).json({
      success: true,
      messageId: info.messageId,
      previewUrl: previewUrl,
      message: "邮件发送成功！请查看预览链接。"
    });
  } catch (error) {
    console.error("邮件发送失败:", error);
    return res.status(500).json({
      success: false,
      message: "邮件发送失败",
      error: error instanceof Error ? error.message : "未知错误"
    });
  }
}

export {
  sendMail,
};
